package com.zhdl.hardware.io.smartLink.service;

import com.zhdl.hardware_modules.entity.DeviceAction;
import com.zhdl.modules.tools.CommonCallback;

import java.util.List;

public interface IOCmdSendService {

    DeviceAction findByDeviceId(int deviceId);

    void updateByDeviceId(int c1, int c2, int c3, int c4);

    /**
     * 读取IO列表-02所有信号
     * @param callback 回调
     */
    void readAllCoil02(String ioNum, CommonCallback<List<Byte>> callback);

    /**
     * 读取IO列表-01所有信号
     * @param callback 回调
     */
    void readAllCoil01(String ioNum, CommonCallback<List<Byte>> callback);

    /**
     * IO读取01-传感器状态
     *
     * @param sensorKey key键
     * @param value     预期结果
     * @param timeout   超时时间
     * @param callback  回调
     */
    void ioReadCoil01(String ioNum, int sensorKey, int value, int timeout, CommonCallback<String> callback);

    /**
     * IO读取02-传感器状态
     *
     * @param sensorKey key键
     * @param value     预期结果
     * @param timeout   超时时间
     * @param callback  回调
     */
    void ioReadCoil02(String ioNum, int sensorKey, int value, int timeout, CommonCallback<String> callback);

    /**
     * IO写入线圈05
     */
    void ioWriteCoil05(int address, boolean open, CommonCallback<String> callback);

    /**
     * IO写入线圈05 - 带超时功能
     */
    void ioWriteCoil05(int address, boolean open, CommonCallback<String> callback, int delayTime);

}
